Paper by the son of Boris Zeldovich and the grandson of Yakob Zeldovich
  1. Stack - static checker that precisely identifies unstable code
  2. Unstable (Optimisation unstable) code is the one that breaks at higher levels of optimisation
  3. Different versions of compilers can discard different types of undefined behaviour due to evolution in optimisation strategies
  4. Unstable Code:
    • A code fragment is unstable if it is not legal for a dialect with well-defined semantics
  5. Two-phase scheme:
    • Run optimiser without taking advantage of undefined behaviour (optimisations under C*)
    • Run the optimiser again with UP optimisations enabled
    • If extra code is optimised in the second phase, we assume that the code is unstable